package utils

import (
	"crypto/rand"
	"encoding/hex"
	"fmt"
	"strings"
	"time"
)

// GenerateID 生成24位ID（模拟MongoDB ObjectId）
func GenerateID() string {
	// 使用时间戳和随机数生成24位十六进制字符串
	timestamp := time.Now().Unix()
	randomBytes := make([]byte, 8)
	rand.Read(randomBytes)
	randomHex := hex.EncodeToString(randomBytes)
	return fmt.Sprintf("%016x%s", timestamp, randomHex)[:24]
}

// GetCurrentTimestamp 获取当前13位时间戳（毫秒）
func GetCurrentTimestamp() int64 {
	return time.Now().UnixNano() / int64(time.Millisecond)
}

// ParseTimestamp 解析13位时间戳
func ParseTimestamp(timestamp int64) time.Time {
	return time.Unix(timestamp/1000, (timestamp%1000)*int64(time.Millisecond))
}

// FormatFloat 格式化浮点数为字符串（保留1位小数）
func FormatFloat(f float64) string {
	return fmt.Sprintf("%.1f", f)
}

// StringToFloat 字符串转浮点数
func StringToFloat(s string) (float64, error) {
	var f float64
	_, err := fmt.Sscanf(s, "%f", &f)
	return f, err
}

// GetPicURL 将缩略图URL转换为大图URL
func GetPicURL(smallPicURL string) string {
	// 将 _small.webp 替换为 .jpg
	if len(smallPicURL) > 11 && smallPicURL[len(smallPicURL)-11:] == "_small.webp" {
		return smallPicURL[:len(smallPicURL)-11] + ".jpg"
	}
	return smallPicURL
}

// ParseTabsString 解析标签字符串（逗号分隔）
func ParseTabsString(tabsStr string) []string {
	if tabsStr == "" {
		return []string{}
	}
	// 使用strings.Split分割
	tags := strings.Split(tabsStr, ",")
	var result []string
	for _, tag := range tags {
		tag = strings.TrimSpace(tag)
		if tag != "" {
			result = append(result, tag)
		}
	}
	return result
}

